home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / snmp / mib2c-data / generic-ctx-get.m2i < prev    next >
Text File  |  2008-09-22  |  4KB  |  107 lines

  1. #############################################################  -*- c -*-
  2. ## generic include for XXX. Do not use directly.
  3. ##
  4. ## $Id: generic-ctx-get.m2i 12865 2005-09-27 17:05:53Z rstory $
  5. ########################################################################
  6. @if $m2c_mark_boundary == 1@
  7. /** START code generated by $RCSfile$ $Revision: 12865 $ */
  8. @end@
  9. ########################################################################
  10. ##/*
  11. ## This include will generate the code needed to assign data from
  12. ## a generated data context to a parameter reference.
  13. ##
  14. ## EXAMPLE (prototype generated elsewhere)
  15. ## int
  16. ## ifName_get(ifXTable_ctx * ctx, char **ifName_ptr_ptr,
  17. ##            size_t * ifName_len_ptr) {
  18. ##
  19. ## 
  20. ## m2c_node_lh :   temp_ifName / (*ifName_ptr_ptr)
  21. ## m2c_node_lhs:   temp_ifName_len / (*ifName_len_ptr);
  22. ## m2c_ctx_rh  :   ctx->data.
  23. ## node        :  ifName
  24. ##
  25. ##    if (temp_ifName_len < ctx->data.ifName_len) {
  26. ##        temp_ifName = malloc(ctx->data.ifName_len);
  27. ##    }
  28. ##    temp_ifName_len = ctx->data.ifName_len;
  29. ##    memcpy(temp_ifName, ctx->data.ifName, temp_ifName_len);
  30. ##*/
  31. @if "$m2c_data_context" ne "generated"@
  32.     /** WARNING: this code might not work for $m2c_data_context */
  33. @end@
  34. ##/* set up for length/copy conversions for various cases.
  35. ##   length mod applies to left hand side. copy mod applies to right hand side
  36. ##
  37. ##*/
  38. @if ("$m2c_ctx_rhu" ne "elements") && ("$m2c_ctx_rhu" ne "bytes")@
  39. @   print Invalid rh units '$m2c_ctx_rhu'@
  40. @   exit@
  41. @end@
  42. @if ("$m2c_ctx_lhu" ne "elements") && ("$m2c_ctx_lhu" ne "bytes")@
  43. @   print Invalid lh units '$m2c_ctx_lhu'@
  44. @   exit@
  45. @end@
  46. @if "$m2c_ctx_rhu" ne "$m2c_ctx_lhu"@
  47. ##/*   elements = bytes,    length mod="/sizeof", copy mult="" */
  48. @   if "$m2c_ctx_lhu" eq "elements"@
  49. @      eval $m2c_ctx_lm = "/ sizeof($m2c_ctx_rh[0])"@
  50. @      eval $m2c_ctx_cm = ""@
  51. @   else@
  52. ##/*   bytes    = elements, length mod="*sizeof", copy mult="sizeof" */
  53. @      eval $m2c_ctx_lm = "* sizeof($m2c_ctx_rh[0])"@
  54. @      eval $m2c_ctx_cm = "* sizeof($m2c_ctx_rh[0])"@
  55. @   end@
  56. @else@
  57. ##/*     elements = elements, length mod="",        copy mult="sizeof" */
  58. @   if "$m2c_ctx_lhu" eq "elements"@
  59. @      eval $m2c_ctx_lm = ""@
  60. @      eval $m2c_ctx_cm = "* sizeof($m2c_ctx_rh[0])"@
  61. @   else@
  62. ##/*     bytes    = bytes,    length mod="",        copy mult="" */
  63. @      eval $m2c_ctx_lm = ""@
  64. @      eval $m2c_ctx_cm = ""@
  65. @   end@
  66. @end@
  67. @if $m2c_node_needlength == 1@
  68.     /*
  69.      * make sure there is enough space for $node data
  70.      */
  71.     if ((NULL == $m2c_ctx_lh) ||
  72.         ($m2c_ctx_lhs <
  73.          ($m2c_ctx_rhs$m2c_ctx_lm))) {
  74. @   if $m2c_node_realloc == 0@
  75.         snmp_log(LOG_ERR,"not enough space for value\n");
  76.         return MFD_ERROR;
  77. @   else@
  78.         /*
  79.          * allocate space for $node data
  80.          */
  81. @      if $m2c_node_realloc == 1@
  82.         $m2c_ctx_lh = realloc($m2c_ctx_lh, $m2c_ctx_rhs$m2c_ctx_cm );
  83. @      else@
  84.         $m2c_ctx_lh = malloc($m2c_ctx_rhs$m2c_ctx_cm);
  85. @      end@
  86.         if(NULL == $m2c_ctx_lh) {
  87.             snmp_log(LOG_ERR,"could not allocate memory\n");
  88.             return MFD_ERROR;
  89.         }
  90. @   end@
  91.     }
  92.     $m2c_ctx_lhs = $m2c_ctx_rhs$m2c_ctx_lm;
  93.     memcpy( $m2c_ctx_lh, $m2c_ctx_rh, $m2c_ctx_rhs$m2c_ctx_cm );
  94. @else@
  95. @   if $node.decl =~ /U64/i@ #              ASN_COUNTER64
  96.     ${m2c_ctx_lh}.high = ${m2c_ctx_rh}.high;
  97.     ${m2c_ctx_lh}.low = ${m2c_ctx_rh}.low;
  98. @   else@
  99.     $m2c_ctx_lh = $m2c_ctx_rh;
  100. @   end@
  101. @end@ # length
  102. ##
  103. ########################################################################
  104. @if $m2c_mark_boundary == 1@
  105. /** END code generated by $RCSfile$ $Revision: 12865 $ */
  106. @end@
  107.